Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 16 Die wichtigsten Steuerelemente
  gp 16.1 Gemeinsame Eigenschaften, Methoden und Ereignisse
    gp 16.1.1 Größe und Position
    gp 16.1.2 Die Sichtbarkeit und der Aktivierungszustand
    gp 16.1.3 Die Eigenschaft »Text«
    gp 16.1.4 Die Farbeigenschaften
    gp 16.1.5 Grafische Darstellung
    gp 16.1.6 Die »Modifiers«-Eigenschaft
    gp 16.1.7 Die Eigenschaft »Tag«
    gp 16.1.8 Die Größe von Steuerelementen dynamisch der Formgröße anpassen
    gp 16.1.9 Die »Dock«-Eigenschaft
    gp 16.1.10 Die z-Reihenfolge
    gp 16.1.11 Die Tabulatorreihenfolge
    gp 16.1.12 Steuerelemente fokussieren
    gp 16.1.13 Maus- und Tastaturereignisse
  gp 16.2 Schaltflächen der Klasse »Button«
    gp 16.2.1 Die Rahmendarstellung einer Schaltfläche
    gp 16.2.2 Die Eigenschaft »FlatAppearance«
    gp 16.2.3 Beschriftung und Grafiken
    gp 16.2.4 Weitere Gestaltungsmöglichkeiten
  gp 16.3 Auswahlkästchen mit der Klasse »CheckBox«
    gp 16.3.1 Eigenschaften eines Kontrollkästchens
    gp 16.3.2 Checkboxen mit drei Aktivierungszuständen
  gp 16.4 Die Klasse »RadioButton« (Optionsschaltflächen)
    gp 16.4.1 Die Gruppierung der Optionsschaltflächen
    gp 16.4.2 Die Eigenschaften von Optionsschaltflächen
    gp 16.4.3 Den Zustandswechsel programmieren
  gp 16.5 Die »GroupBox« als übergeordneter Container
  gp 16.6 Texteingabefelder mit der Klasse »TextBox«
    gp 16.6.1 Einzeilige Eingabefelder
    gp 16.6.2 Mehrzeilige Eingabefelder
  gp 16.7 Das Steuerelement »RichTextBox«
  gp 16.8 Beschriftungen mit dem Steuerelement »Label«
  gp 16.9 Das »LinkLabel«-Steuerelement
  gp 16.10 Die Anzeige eines Quickinfo-Texts
    gp 16.10.1 Methoden des »ToolTip«-Steuerelements
    gp 16.10.2 Aktivierungsdauer des »QuickInfo«-Steuerelements
    gp 16.10.3 Weitere Eigenschaften
  gp 16.11 Das »ListBox«-Steuerelement
    gp 16.11.1 Die Auflistung »ListBox.ObjectCollection«
    gp 16.11.2 Eigenschaften zur Darstellung einer Listbox
    gp 16.11.3 Einfach- und Mehrfachauswahl der Listenelemente
    gp 16.11.4 Programmatischer Zugriff auf Listboxen mit Einfachauswahl
    gp 16.11.5 Benutzerdefiniertes Sortieren der Listenelemente
    gp 16.11.6 Füllen einer Listbox mit »DataSource«
  gp 16.12 Das Steuerelement »CheckedListBox«
  gp 16.13 Die »ComboBox« (Kombinationslistenfeld)
    gp 16.13.1 Ereignisse eines Kombinationslistenfeldes
    gp 16.13.2 Autovervollständigung in einer »ComboBox«


Galileo Computing

16.3 Auswahlkästchen mit der Klasse »CheckBox«  downtop

Die zweite aus ButtonBase abgeleitete Klasse ist CheckBox. Objekte dieses Typs werden auch als Kontrollkästchen oder Auswahlkästchen bezeichnet. Wird zur Laufzeit auf das Kästchen geklickt, wird im Kästchen ein Häkchen angezeigt, das durch erneutes Klicken entfernt wird.

Die wichtigste Eigenschaft ist demzufolge die, die den Zustand des Kontrollkästchens mit einem booleschen Wert beschreibt: Checked. Der Wert der Eigenschaft gibt an, ob das Kästchen markiert ist (true) oder nicht (false). Eine Änderung der Auswahl hat die Auslösung des Ereignisses CheckedChanged zur Folge. Sie können das Ereignis dazu benutzen, um im Ereignishandler den neuen Zustand des Kästchens zu überprüfen, um darauf entsprechend zu reagieren.


private void checkBox1_CheckedChanged(object sender, EventArgs e) {
  if (chekBox1.Checked)
    // Anweisungen
  else
    // Anweisungen
}

Der Aktivierungszustand wird automatisch umgeschaltet, wenn der Anwender auf das Kontrollkästchen klickt. Wenn Sie das vermeiden wollen, müssen Sie die Eigenschaft AutoCheck auf false setzen. Allerdings sind Sie dann auch in der Pflicht, einen anderen Weg zu finden, der die Umschaltung bewirkt, z.B. im Click-Ereignis des Steuerelements:


// Ereignishandler des Click-Ereignisses der Checkbox 'chkBox'
private void checkBox1_Click(object sender, EventArgs e) {
   chkBox.Checked = !chkBox.Checked;
}

Das Fenster im folgenden Beispiel enthält drei Kontrollkästchen, die dazu dienen, den Stil einer Zeichenfolge in einer Textbox in beliebiger Kombination fett, kursiv oder unterstrichen darzustellen.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 16.5   Ausgabe des Beispiels »CheckBoxDemo«


// ---------------------------------------------------------
// Beispiel: ...\Kapitel 16\CheckBoxDemo
// ---------------------------------------------------------
public Form1() {
  CheckBox[] chkFont = new CheckBox[3];
  string[] style ={"Fett", "Kursiv", "Unterstrichen"};
  for(int i = 0; i < 3; i++) {
    chkFont[i] = new CheckBox();
    chkFont[i].Location = new Point(25, 45 + i*25);
    chkFont[i].Text = style[i];
    chkFont[i].CheckedChanged += new EventHandler(CheckboxChanged);
  }
  this.Controls.AddRange(chkFont); 
  InitializeComponent();
}
// Ereignishandler
private void CheckboxChanged(object sender, EventArgs e) {
  FontStyle[] fs = {FontStyle.Bold, FontStyle.Italic, FontStyle.Underline};
  FontStyle newFontStyle = 0;
  for(int i = 0; i < 3; i++) {
    if(((CheckBox)this.Controls[i]).Checked)
      newFontStyle |= fs[i];
  }
  textBox1.Font = new Font(textBox1.Font, newFontStyle);
}

Bei Auswahlkästchen und den im folgenden Abschnitt beschriebenen Optionsschaltflächen stoßen wir auf ein generelles Problem des Windows Forms-Designers. Enthält eine Form mehrere gleichartige Steuerelemente, stehen diese häufig in einem funktional-logischen Zusammenhang – wie auch in diesem Beispiel. Es bietet sich in solchen Fällen an, diesen Zusammenhang durch ein Steuerelement-Array abzubilden. Mit dem Windows Forms-Designer lassen sich jedoch solche nicht erzeugen. Aus diesem Grund werden die Kontrollkästchen im Code des Form-Konstruktors erzeugt.

Dazu wird zuerst ein Array vom Typ CheckBox deklariert, das drei Elemente enthält:


CheckBox[] chkFont = new CheckBox[3];

Einem zweiten Array vom Typ string werden Zeichenketten zugewiesen, die den Kontrollkästchen als Beschriftung dienen. Alle wesentlichen Eigenschaften der drei Checkboxen können dann in einer Schleife initialisiert werden:


string[] style ={"Fett", "Kursiv", "Unterstrichen"};
for(int i = 0; i <= 2; i++) {
  chkFont[i] = new CheckBox();
  chkFont[i].Location = new Point(25, 45 + i * 25);
  chkFont[i].Text = style[i];
  // Ereignishandler installieren
  chkFont[i].CheckedChanged += new EventHandler(CheckboxChanged);
}

Beim Klicken auf eine der drei Checkboxen wird das Ereignis CheckChanged ausgelöst. Der Ereignishandler CheckboxChanged ist so implementiert, dass er sich bei den Ereignissen der drei Checkboxen registriert. Nach dem Beenden der Schleife wird das CheckBox-Array mit der Methode AddRange der ControlCollection der Form mit


this.Controls.AddRange(chkFont);

übergeben.

Sehen wir uns nun den Ereignishandler an. Die Mitglieder der Aufzählung FontStyle werden einem Array zugewiesen. Dabei ist zu beachten, dass die Reihenfolge funktionell der des Zeichenfolge-Arrays style entspricht. Damit gewährleisten wir, dass der Zähler der Schleife als Index des Kontrollkästchen-Arrays benutzt werden kann und das richtige Element aus dem FontStyle-Array zugeordnet wird.


FontStyle[] fs = {FontStyle.Bold, FontStyle.Italic, FontStyle.Underline};

Klickt der Anwender zur Laufzeit auf eines der Kontrollkästchen, wird eine Schleife durchlaufen und der Zustand Checked jedes einzelnen Kontrollkästchens überprüft. Innerhalb der Schleife wird der aktuelle Aktivierungszustand aller Auswahlkästchen abgefragt:


if(((CheckBox)this.Controls[i]).Checked)
  ...

Obwohl sich mit der Textbox ein weiteres Steuerelement in der Form befindet, dessen Referenz nicht in den Typ CheckBox konvertiert werden kann, wird das if-Statement zu keinem Fehler führen. Es zahlt sich hier für uns aus, dass wir vor dem Aufruf der Initialisierungsroutine InitializeComponent die Checkboxen der ControlCollection hinzugefügt haben und daher deren Index in der Auflistung genau kennen.

Abhängig davon, ob das Kontrollkästchen markiert ist oder nicht, werden die entsprechenden Bits in der Variablen newFontStyle vom Typ FontStyle mit


newFontStyle |= fs[i];

gesetzt und das Ergebnis nach Beendigung der Schleife dem zweiten Parameter des Font-Konstruktors übergeben.


Galileo Computing

16.3.1 Eigenschaften eines Kontrollkästchens  downtop

Die Beschriftung einer Checkbox erfolgt mit der schon bekannten Eigenschaft Text. Standardmäßig ist das Kästchen im Steuerelement links ausgerichtet, die Beschriftung rechts davon. Über die Eigenschaft CheckAlign kann das Kästchen innerhalb der gesamten Fläche des Steuerelements angeordnet werden:


public ContentAlignment CheckAlign {get; set;}

Die Aufzählung ContentAlignment haben wir im Zusammenhang mit den Schaltflächen schon behandelt (siehe Tabelle 16.4). Der Standard der Textausrichtung eines Kontrollkästchens ist ContentAlignment.MiddleLeft.

Ebenso lässt auch die Beschriftung mit der Eigenschaft TextAlign ausrichten, die vom gleichen Typ ist wie CheckAlign und damit auch dieselben Einstellungen zulässt. Ist man ein Freund von grafischen Symbolen, bietet sich anstelle der Beschriftung oder auch zusätzlich zu dieser an, der Eigenschaft Image eine Bitmap, ein Icon oder ein Metafile anzugeben und dieses mit ImageAlign auszurichten.

Ein Kontrollkästchen muss sich nicht unbedingt als Kästchen darstellen. Über die Eigenschaft Appearance mit der Einstellung


checkbox1.Appearance = Appearance.Button;

kann das Erscheinungsbild auch das einer Schaltfläche sein (der Standard ist Appearance.Normal) Allerdings unterscheidet sich das Verhalten eines so festgelegten Kontrollkästchens von dem eines herkömmlichen Buttons, denn im ausgewählten Zustand bleibt das Kontrollkästchen – besser sollte man jetzt von einem Button sprechen – im gedrückten Zustand. Das entspricht der Einstellung true der Eigenschaft Checked. In Abbildung 16.6 ist das mit checkbox1 beschriftete Steuerelement ausgewählt, das andere nicht.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 16.6   Kontrollkästchen mit der Einstellung »Appearance.Button«

Die Darstellungsarten einer Auswahlschaltfläche

Sie können, wie Sie eben gesehen haben, eine CheckBox sowohl als Auswahlkästchen oder als Schaltfläche anzeigen lassen. Darüber hinaus gestattet die Eigenschaft FlatStyle weitere Stile (siehe auch Tabelle 16.2). Mit der Einstellung FlatStyle=Flat und Appearance=Button wird auch die Eigenschaft FlatAppearance, die Sie schon im Zusammenhang mit den Buttons kennen gelernt haben, wieder interessant. Zusätzlich zu den Eigenschaften, die der Tabelle 16.3 zu entnehmen sind, können Checkboxen auch eine gewünschte Hintergrundfarbe im ausgewählten Zustand annehmen. Hierzu dient die Eigenschaft CheckedBackColor der Klasse FlatButtonAppearance.


Galileo Computing

16.3.2 Checkboxen mit drei Aktivierungszuständen  toptop

Bisher haben Sie das Kontrollkästchen als ein Steuerelement kennen gelernt, das die beiden Zustände true und false anzeigt. Manchmal ist jedoch ein Steuerelement dieses Typs erforderlich, das einen »Zwischenzustand« beschreibt. Denken Sie beispielsweise an einen markierten Text in einem Textverarbeitungsdokument. In einem Kontrollkästchen, das für die Festlegung der fetten Schrift zuständig ist, wird das Häkchen gesetzt, wenn auch tatsächlich der gesamte markierte Text fett dargestellt wird. Was ist aber, wenn der markierte Text nur teilweise fett geschrieben ist? Das Kästchen deaktiviert zu lassen, spiegelt genauso wenig die Realität wider wie der aktivierte Zustand. Es muss ein Kompromiss in der Darstellung des Kontrollkästchens gefunden werden. Diesem Sonderfall wird mit den beiden Eigenschaften ThreeState und CheckState Rechnung getragen.

Die Eigenschaft ThreeState beschreibt mit einem booleschen Wert, ob das Kontrollkästchen anstatt der üblichen zwei nun drei Aktivierungszustände unterstützt. Der Standard ist false. Um drei mögliche Zustände darzustellen, setzen Sie ThreeState=true. Der aktuelle Zustand des Auswahlkästchens wird danach durch die Eigenschaft CheckState beschrieben, die drei Werte annehmen kann, die mit der gleichnamigen Enumeration beschrieben werden.


Tabelle 16.5   Die Aufzählung »CheckState«

Member Beschreibung
Unchecked Das Kästchen ist nicht markiert.
Checked Das Kästchen ist markiert.
Intermediate Das Kästchen ist markiert, wird zur Kennzeichnung des Zwischenzustands aber grau hinterlegt.

Haben Sie ein Kontrollkästchen, das drei Zustände anzeigen kann, sollten Sie nicht das Ereignis CheckChanged, sondern das Ereignis CheckStateChanged programmieren, das auftritt, wenn sich die CheckState-Eigenschaft ändert.

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de